﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Windows.Forms;

using Urgencias.Modelo;

namespace Urgencias.Controlador
{
    class EnfermeriaControlador
    {
        private static EnfermeriaControlador instance;
        Enfermeria e;

        public EnfermeriaControlador()
        {
            e = new Enfermeria();
        }

        public static EnfermeriaControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new EnfermeriaControlador();
                }

                return instance;
            }
        }


        public ComboBox.ObjectCollection obtenerEspecialidadesEnfermeria()
        {
            ComboBox.ObjectCollection lista = new ComboBox.ObjectCollection(new ComboBox());

            SqlCommand com = new SqlCommand();
            //
            string str = "select * from ESPECIALIDADENFERMERIA";
            com.CommandText = str;
            com.Connection =  Conexion.Instance.Con;
            SqlDataReader reader = com.ExecuteReader();
            while (reader.Read())
            {
                lista.Add(((string)reader["Nombre"]).Trim());
            }

            reader.Close();
            Conexion.Instance.Con.Close();
            return lista;
        }

        public List<Enfermeria> obtenerEnfermeras()
        {
            List<Enfermeria> lista = new List<Enfermeria>();


            SqlCommand com = new SqlCommand();

            //string str = ;

            com.CommandText = "select * from ENFERMERA WHERE DISPONIBILIDAD_FUNCIONARIO=@disponibilidad";
            //com.Parameters.AddWithValue("@especialidad", "Anestesiología y Reanimación");
            com.Parameters.AddWithValue("@disponibilidad", true);
            com.Connection = Conexion.Instance.Con;
            SqlDataReader reader = com.ExecuteReader();
            while (reader.Read())
            {
                Enfermeria m = new Enfermeria();
                m.Run = reader.GetString(0);
                m.EspecialidadEnfermeria = reader.GetString(1);
                m.Nombre = reader.GetString(2);
                m.ApellidoPaterno = reader.GetString(3);
                m.ApellidoMaterno = reader.GetString(4);
                m.FechaNacimiento = reader.GetDateTime(5);
                m.Sexo = reader.GetString(6)[0];
                m.Disponible = reader.GetBoolean(7);

                lista.Add(m);
            }

            Conexion.Instance.Con.Close();

            return lista;
        }

        public List<Enfermeria> obtenerArsenaleras()
        {
            List<Enfermeria> lista = new List<Enfermeria>();


            SqlCommand com = new SqlCommand();

            //string str = ;

            com.CommandText = "select * from ENFERMERA WHERE ESPECIALIDAD_ENFERMERIA=@especialidad AND DISPONIBILIDAD_FUNCIONARIO=@disponibilidad";
            com.Parameters.AddWithValue("@especialidad", "Arsenalera");
            com.Parameters.AddWithValue("@disponibilidad", true);
            com.Connection = Conexion.Instance.Con;
            SqlDataReader reader = com.ExecuteReader();
            while (reader.Read())
            {
                Enfermeria m = new Enfermeria();
                m.Run = reader.GetString(0);
                m.EspecialidadEnfermeria = reader.GetString(1);
                m.Nombre = reader.GetString(2);
                m.ApellidoPaterno = reader.GetString(3);
                m.ApellidoMaterno = reader.GetString(4);
                m.FechaNacimiento = reader.GetDateTime(5);
                m.Sexo = reader.GetString(6)[0];
                m.Disponible = reader.GetBoolean(7);

                lista.Add(m);
            }

            Conexion.Instance.Con.Close();

            return lista;
        }

        public bool ingresarEnfermeria(string RUN, string ESPECIALIDAD_ENFERMERIA, string NOMBRE, string APELLIDOPATERNO, string APELLIDOMATERNO, DateTime FECHANACIMIENTO, char SEXO, bool DISPONIBILIDAD_FUNCIONARIO)
        {
            /*string RUN, ESPECIALIDAD_MEDICA, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, DISPONIBILIDAD_FUNCIONARIO;
            char SEXO;
            DateTime FECHANACIMIENTO;*/

            if (FuncionarioControlador.Instance.ingresarFuncionario(RUN, ESPECIALIDAD_ENFERMERIA, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, FECHANACIMIENTO, SEXO, DISPONIBILIDAD_FUNCIONARIO))
                try
                {
                    SqlCommand com = new SqlCommand();


                    com.CommandText = "INSERT INTO ENFERMERA" +
                        "(RUN,  ESPECIALIDAD_ENFERMERIA, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO,FECHANACIMIENTO,SEXO, DISPONIBILIDAD_FUNCIONARIO)" + "VALUES" +
                        "(@run, @especialidad_enfermeria, @nombre, @apellidopaterno, @apellidomaterno, @fechanacimiento, @sexo, @disponibilidad_funcionario)";

                    com.Parameters.AddWithValue("@run", RUN);
                    com.Parameters.AddWithValue("@especialidad_enfermeria", ESPECIALIDAD_ENFERMERIA);
                    com.Parameters.AddWithValue("@nombre", NOMBRE);
                    com.Parameters.AddWithValue("@apellidopaterno", APELLIDOPATERNO);
                    com.Parameters.AddWithValue("@apellidomaterno", APELLIDOMATERNO);
                    com.Parameters.AddWithValue("@sexo", SEXO);
                    com.Parameters.AddWithValue("@fechanacimiento", FECHANACIMIENTO);
                    com.Parameters.AddWithValue("@disponibilidad_funcionario", DISPONIBILIDAD_FUNCIONARIO);

                    com.Connection = Conexion.Instance.Con;
                    SqlDataReader ejecutar = com.ExecuteReader();
                    Conexion.Instance.Con.Close();
                    return true;
                }
                catch (Exception e)
                {
                    Conexion.Instance.Con.Close();
                    Console.WriteLine(e.Message);
                    return false;
                    throw;
                }
            else
                return false;
        }
    }
}
